home *** CD-ROM | disk | FTP | other *** search
- package mx.messaging.channels
- {
- import flash.events.ErrorEvent;
- import flash.events.IOErrorEvent;
- import flash.events.NetStatusEvent;
- import flash.events.SecurityErrorEvent;
- import flash.events.TimerEvent;
- import flash.net.NetConnection;
- import flash.net.ObjectEncoding;
- import mx.logging.Log;
- import mx.messaging.Consumer;
- import mx.messaging.MessageAgent;
- import mx.messaging.MessageResponder;
- import mx.messaging.events.ChannelFaultEvent;
- import mx.messaging.events.MessageEvent;
- import mx.messaging.messages.CommandMessage;
- import mx.messaging.messages.IMessage;
-
- public class NetConnectionChannel extends PollingChannel
- {
- private var _nc:NetConnection;
-
- public function NetConnectionChannel(param1:String, param2:String)
- {
- super(param1,param2);
- _nc = new NetConnection();
- _nc.objectEncoding = ObjectEncoding.AMF3;
- _nc.client = this;
- }
-
- private function securityErrorHandler(param1:SecurityErrorEvent) : void
- {
- defaultErrorHandler("Channel.Security.Error",param1);
- }
-
- private function defaultErrorHandler(param1:String, param2:ErrorEvent) : void
- {
- var _loc3_:ChannelFaultEvent = null;
- _loc3_ = ChannelFaultEvent.createEvent(this,false,param1,"error",param2.text + " url: \'" + endpoint + "\'");
- _loc3_.rootCause = param2;
- dispatchEvent(_loc3_);
- }
-
- public function AppendToGatewayUrl(param1:String) : void
- {
- if(param1 != null && endpoint != null)
- {
- netConnection.connect(endpoint + param1);
- }
- }
-
- private function shutdownNetConnection() : void
- {
- _nc.removeEventListener(SecurityErrorEvent.SECURITY_ERROR,securityErrorHandler);
- _nc.removeEventListener(IOErrorEvent.IO_ERROR,ioErrorHandler);
- _nc.removeEventListener(NetStatusEvent.NET_STATUS,statusHandler);
- _nc.close();
- }
-
- override protected function connectTimeoutHandler(param1:TimerEvent) : void
- {
- shutdownNetConnection();
- super.connectTimeoutHandler(param1);
- }
-
- override protected function internalDisconnect(param1:Boolean = false) : void
- {
- super.internalDisconnect(param1);
- shutdownNetConnection();
- disconnectSuccess(param1);
- }
-
- override protected function getPollSyncMessageResponder(param1:Consumer, param2:CommandMessage) : MessageResponder
- {
- return new PollSyncMessageResponder(param1,param2,this);
- }
-
- public function receive(param1:IMessage, ... rest) : void
- {
- if(Log.isDebug())
- {
- _log.debug("\'{0}\' channel got message\n{1}\n",id,param1.toString());
- }
- dispatchEvent(MessageEvent.createEvent(MessageEvent.MESSAGE,param1));
- }
-
- override protected function internalSend(param1:MessageResponder) : void
- {
- _nc.call(null,param1,param1.message);
- }
-
- override protected function getDefaultMessageResponder(param1:MessageAgent, param2:IMessage) : MessageResponder
- {
- return new NetConnectionMessageResponder(param1,param2,this);
- }
-
- private function ioErrorHandler(param1:IOErrorEvent) : void
- {
- defaultErrorHandler("Channel.IO.Error",param1);
- }
-
- protected function internalConnectNC() : void
- {
- try
- {
- _nc.connect(endpoint);
- }
- catch(e:Error)
- {
- e.message += " url: \'" + endpoint + "\'";
- throw e;
- }
- }
-
- override protected function internalConnect() : void
- {
- if(_nc.uri != null && _nc.uri.length > 0)
- {
- _nc.removeEventListener(NetStatusEvent.NET_STATUS,statusHandler);
- _nc.close();
- }
- _nc.addEventListener(NetStatusEvent.NET_STATUS,statusHandler);
- _nc.addEventListener(SecurityErrorEvent.SECURITY_ERROR,securityErrorHandler);
- _nc.addEventListener(IOErrorEvent.IO_ERROR,ioErrorHandler);
- internalConnectNC();
- super.internalConnect();
- }
-
- public function get netConnection() : NetConnection
- {
- return _nc;
- }
-
- protected function statusHandler(param1:NetStatusEvent) : void
- {
- }
- }
- }
-
- import mx.messaging.MessageAgent;
- import mx.messaging.MessageResponder;
- import mx.messaging.events.ChannelEvent;
- import mx.messaging.events.ChannelFaultEvent;
- import mx.messaging.messages.AcknowledgeMessage;
- import mx.messaging.messages.AsyncMessage;
- import mx.messaging.messages.CommandMessage;
- import mx.messaging.messages.ErrorMessage;
- import mx.messaging.messages.IMessage;
- import mx.utils.Translator;
-
- class NetConnectionMessageResponder extends MessageResponder
- {
- private static const TRANSLATOR:Translator = Translator.getMessagingInstance();
-
- public function NetConnectionMessageResponder(param1:MessageAgent, param2:IMessage, param3:NetConnectionChannel)
- {
- super(param1,param2,param3);
- param3.addEventListener(ChannelEvent.DISCONNECT,channelDisconnectHandler);
- param3.addEventListener(ChannelFaultEvent.FAULT,channelFaultHandler);
- }
-
- override protected function requestTimedOut() : void
- {
- disconnect();
- statusHandler(createRequestTimeoutErrorMessage());
- }
-
- protected function channelDisconnectHandler(param1:ChannelEvent) : void
- {
- var _loc2_:ErrorMessage = null;
- disconnect();
- _loc2_ = new ErrorMessage();
- _loc2_.correlationId = message.messageId;
- _loc2_.faultString = TRANSLATOR.textOf("deliveryInDoubt");
- _loc2_.faultDetail = TRANSLATOR.textOf("deliveryInDoubt.details");
- _loc2_.faultCode = ErrorMessage.MESSAGE_DELIVERY_IN_DOUBT;
- agent.fault(_loc2_,message);
- }
-
- override protected function resultHandler(param1:IMessage) : void
- {
- var _loc2_:ErrorMessage = null;
- disconnect();
- if(param1 is AsyncMessage)
- {
- if(AsyncMessage(param1).correlationId == message.messageId)
- {
- agent.acknowledge(param1 as AcknowledgeMessage,message);
- }
- else
- {
- _loc2_ = new ErrorMessage();
- _loc2_.faultCode = "Server.Acknowledge.Failed";
- _loc2_.faultString = TRANSLATOR.textOf("ackFailed");
- _loc2_.faultDetail = TRANSLATOR.textOf("ackFailed.details",message.messageId,AsyncMessage(param1).correlationId);
- _loc2_.correlationId = message.messageId;
- agent.fault(_loc2_,message);
- }
- }
- else
- {
- _loc2_ = new ErrorMessage();
- _loc2_.faultCode = "Server.Acknowledge.Failed";
- _loc2_.faultString = TRANSLATOR.textOf("noAckMessage");
- _loc2_.faultDetail = TRANSLATOR.textOf("noAckMessage.details",!!param1 ? param1.toString() : "null");
- _loc2_.correlationId = message.messageId;
- agent.fault(_loc2_,message);
- }
- }
-
- override protected function statusHandler(param1:IMessage) : void
- {
- var _loc2_:AcknowledgeMessage = null;
- var _loc3_:ErrorMessage = null;
- disconnect();
- if(param1 is AsyncMessage)
- {
- if(AsyncMessage(param1).correlationId == message.messageId)
- {
- _loc2_ = new AcknowledgeMessage();
- _loc2_.correlationId = AsyncMessage(param1).correlationId;
- _loc2_.headers[AcknowledgeMessage.ERROR_HINT_HEADER] = true;
- agent.acknowledge(_loc2_,message);
- agent.fault(param1 as ErrorMessage,message);
- }
- else if(param1 is ErrorMessage)
- {
- agent.fault(param1 as ErrorMessage,message);
- }
- else
- {
- _loc3_ = new ErrorMessage();
- _loc3_.faultCode = "Server.Acknowledge.Failed";
- _loc3_.faultString = TRANSLATOR.textOf("noErrorForMessage");
- _loc3_.faultDetail = TRANSLATOR.textOf("noErrorForMessage.details",message.messageId,AsyncMessage(param1).correlationId);
- _loc3_.correlationId = message.messageId;
- agent.fault(_loc3_,message);
- }
- }
- else
- {
- _loc3_ = new ErrorMessage();
- _loc3_.faultCode = "Server.Acknowledge.Failed";
- _loc3_.faultString = TRANSLATOR.textOf("noAckMessage");
- _loc3_.faultDetail = TRANSLATOR.textOf("noAckMessage.details",!!param1 ? param1.toString() : "null");
- _loc3_.correlationId = message.messageId;
- agent.fault(_loc3_,message);
- }
- }
-
- protected function channelFaultHandler(param1:ChannelFaultEvent) : void
- {
- var _loc2_:ErrorMessage = null;
- disconnect();
- _loc2_ = param1.createErrorMessage();
- _loc2_.correlationId = message.messageId;
- if(!param1.channel.connected)
- {
- _loc2_.faultCode = ErrorMessage.MESSAGE_DELIVERY_IN_DOUBT;
- }
- agent.fault(_loc2_,message);
- }
-
- private function disconnect() : void
- {
- channel.removeEventListener(ChannelEvent.DISCONNECT,channelDisconnectHandler);
- channel.removeEventListener(ChannelFaultEvent.FAULT,channelFaultHandler);
- }
- }
-
- class PollSyncMessageResponder extends NetConnectionMessageResponder
- {
- public function PollSyncMessageResponder(param1:MessageAgent, param2:IMessage, param3:NetConnectionChannel)
- {
- super(param1,param2,param3);
- }
-
- override protected function channelDisconnectHandler(param1:ChannelEvent) : void
- {
- }
-
- override protected function resultHandler(param1:IMessage) : void
- {
- var _loc2_:CommandMessage = null;
- super.resultHandler(param1);
- if(param1 is AsyncMessage && AsyncMessage(param1).correlationId == message.messageId)
- {
- _loc2_ = CommandMessage(message);
- switch(_loc2_.operation)
- {
- case CommandMessage.SUBSCRIBE_OPERATION:
- NetConnectionChannel(channel).enablePolling();
- break;
- case CommandMessage.UNSUBSCRIBE_OPERATION:
- NetConnectionChannel(channel).disablePolling();
- }
- }
- }
-
- override protected function channelFaultHandler(param1:ChannelFaultEvent) : void
- {
- }
- }
-